<?php
    @header("Content-Type:text/html;charset=utf-8");  // 兼容低版本php

    // 变量创建规则
    // 变量以 $ 符号开始，后面跟着变量的名称
    // 变量名必须以字母或者下划线字符开始
    // 变量名只能包含字母 数字字符 以及 下划线（A-z、0-9 和 _ ）
    // 变量名不能包含空格
    // 变量名是区分大小写的（$y 和 $Y 是两个不同的变量）

    // 全局变量 (函数外声明的变量 全局变量)
    // 问题?  
    // 默认情况下 函数内无法访问函数外的全局变量   => 如何在函数内访问全局变量

   /*  $a = 10;
    $b = 20;
    echo $a,"->",$b,null;
    echo "<br>";

    function fn(){
        // 局部变量 
        // 
        echo $a,"->",$b;    // $a = null $b = null;
    }

    fn(); */
   

    // 怎么解决 
    // (1)  借助global关键词  =>   允许局部变量 访问全局变量
    // (2)  借助超级全局变量 $GLOBALS (类似js中window)  本质是一个数组

    /* $a = 10;
    $b = 20;
    echo $a,"->",$b;  // 10 20
    echo "<br>";

    function fn(){
        global $a,$b;    // 允许局部变量 访问全局变量 => $a,$b就是全局的
        $a = 100;
        $b = 200;
        echo $a,"->",$b; // 100 200
        echo "<br>";
    }

    fn();
    echo $a,"->",$b; */

    // (2)  借助超级全局变量 $GLOBALS (类似js中window)  本质是一个数组
    $a = 10;
    $b = 20;
    echo $a,"->",$b;  // 10 20
    echo "<br>";

    // print_r($GLOBALS);   // $GLOBALS是一个关联数组  array("a"=>10,"b"=>20)
    // echo $GLOBALS["a"];  // 取值和赋值 只有中括号语法  => 理解为JS的  window["a"]

    function fn(){
        $GLOBALS["a"] = 100;
        $GLOBALS["b"] = 200;
        echo $GLOBALS["a"],"->", $GLOBALS["b"]; // 100 200
        echo "<br>";
    }
    fn();
    echo $a,"->",$b;
   

?>

<script>
   /*  var a = 10;
    var b = 20;
    console.log(a,b); // 10 20

    function fn(){
        var a = 100;
        var b = 200;

        window.a = 1000;
        window["b"] = 2000;

        console.log(a,b); // 100 200
    }
    fn();
    console.log(a,b);  // 1000 2000 */

</script>